home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / wtek0693.zip / OOPALLEY.ZIP / OOPSCONF.H < prev    next >
C/C++ Source or Header  |  1993-04-27  |  3KB  |  80 lines

  1. #ifndef OOPSCONFIG_H
  2. #define OOPSCONFIG_H
  3.  
  4. ////////////////////////////////////////////////////////////
  5. // Global inline functions
  6. // (machine specific routines and information)
  7. ////////////////////////////////////////////////////////////
  8. inline unsigned mod_sizeof_short(unsigned i)
  9. {
  10.   return sizeof(short)&sizeof(short)-1
  11.          ? i%sizeof(short)
  12.          : i&sizeof(short)-1;
  13. }
  14.  
  15. inline unsigned mod_sizeof_int(unsigned i)
  16. {
  17.   return sizeof(int)&sizeof(int)-1
  18.          ? i%sizeof(int)
  19.          : i&sizeof(int)-1;
  20. }
  21.  
  22. inline unsigned mod_sizeof_long(unsigned i)
  23. {
  24.   return sizeof(long)&sizeof(long)-1
  25.          ? i%sizeof(long)
  26.          : i&sizeof(long)-1;
  27. }
  28.  
  29. inline unsigned mod_sizeof_float(unsigned i)
  30. {
  31.   return sizeof(float)&sizeof(float)-1
  32.          ? i%sizeof(float)
  33.          : i&sizeof(float)-1;
  34. }
  35.  
  36. inline unsigned mod_sizeof_double(unsigned i)
  37. {
  38.   return sizeof(double)&sizeof(double)-1
  39.          ? i%sizeof(double)
  40.          : i&sizeof(double)-1;
  41. }
  42.  
  43. inline unsigned mod_sizeof_ptr(unsigned i)
  44. {
  45.   return sizeof(void*)&sizeof(void*)-1
  46.          ? i%sizeof(void*)
  47.          : i&sizeof(void*)-1;
  48. }
  49.  
  50. // These are machine specific
  51. // and for the (8086) they are memory model specific
  52. // This configuration is for a small memory model
  53.  
  54. inline unsigned     div_bitsize_char(unsigned i)    { return i >> 3; }
  55. inline unsigned     mod_bitsize_char(unsigned i)    { return i & 7; }
  56. inline unsigned     div_sizeof_short(unsigned i)    { return i >> 1; }
  57. inline unsigned     div_sizeof_int(unsigned i)      { return i >> 1; }
  58. inline unsigned     div_sizeof_long(unsigned i)     { return i >> 2; }
  59. inline unsigned     div_sizeof_float(unsigned i)    { return i >> 2; }
  60. inline unsigned     div_sizeof_double(unsigned i)   { return i >> 3; }
  61. #ifdef __LARGE__
  62. inline unsigned     div_sizeof_ptr(unsigned i)      { return i >> 2; }
  63. #else
  64. inline unsigned     div_sizeof_ptr(unsigned i)      { return i >> 1; }
  65. #endif           
  66.  
  67.  
  68. ////////////////////////////////////////////////////////////
  69. // Pseudo-random number generator
  70. ////////////////////////////////////////////////////////////
  71. const long MAX_INT = 0x7fffffffL;
  72. //inline long DRAW(unsigned long& x)                // Generates temporary variable
  73.                                                     // for argument x Warning
  74. inline long DRAW(unsigned long x)                   // 4/24/93 -gmv removed reference &
  75. {                                                   // to eliminate Warning
  76.     return (x = x*1103515245L + 12345) & MAX_INT;
  77. }
  78.  
  79. #endif
  80.